#include <iostream>
#include <set>
#include <sw/redis++/redis++.h>
#include "util.hpp"
using namespace std;
using sw::redis::Redis;
void test1(Redis &redis)
{
    redis.flushall();
    redis.sadd("key", "1");
    redis.sadd("key", {"2", "3", "4"});
    set<string> container({"5", "6", "7"});
    redis.sadd("key", container.begin(), container.end());

    set<string> s;
    auto it = inserter(s, s.end());
    redis.smembers("key", it);
    PrintContainer(s);

    bool result = redis.sismember("key", "1");
    cout << "reslue:" << result << endl;
}
void test2(Redis &redis)
{
    redis.flushall();
    redis.sadd("key", {"1", "2", "3"});
    long long len = redis.scard("key");
    cout << "len:" << len << endl;
    auto it = redis.spop("key");
    if (it)
    {
        cout << "it:" << it.value() << endl;
    }
    auto value = redis.srandmember("key");
    if (value)
    {
        cout << "value:" << value.value() << endl;
    }
}
void test3(Redis &redis)
{
    redis.flushall();
    redis.sadd("key1", {"1", "2", "3", "4"});
    redis.sadd("key2", {"1", "2", "5", "6"});
    set<string> container;
    auto it = inserter(container, container.end());
    redis.sinter({"key1", "key2"}, it);
    PrintContainer(container);
}
int main()
{
    Redis redis("tcp://127.0.0.1:6379");
    test3(redis);
    return 0;
}